<?php

/**
 * @see Autoloader
 */
require "Autoload.php";
spl_autoload_register("Autoload");
ini_set('unserialize_callback_func', 'Autoload');
error_reporting(E_ALL | E_NOTICE | E_STRICT);

try {

	$config = new CacheConfiguration();
	$config->setIsolationLevel(IsolationLevel::READ_COMMITTED);
	$config->setCacheMode(CacheMode::LOCAL);
	$config->setLockAdquisitionTimeout(15);
	$config->setServerURL("http://localhost/cache/");
	$config->setUsername("admin");
	$config->setPassword("admin");

	$factory = new CacheFactory();
	$cache = $factory->createCache($config);
	$rootNode = $cache->getRootNode();

	#$fqn = FullyQualifiedName::fromString("/griffin/peter");
	#$petterGriffin = $rootNode->addChild($fqn);


	$petterGriffin = $cache->query("/griffin/peter");

	print $petterGriffin->getId()."\n";

	print_r($petterGriffin->get("favoriteDrink"));

	#$beer = new stdClass();
	#$beer->name = "Miller";

	#$petterGriffin->put("isCartoonCharacter", true);
	#$petterGriffin->put("favoriteDrink", $beer);

	/*$fqn = FullyQualifiedName::fromString("/a/b/c");
	$rootNode = $cache->getRoot();
	$node = $rootNode->addChild($fqn);
	$fqn = FullyQualifiedName::fromString("/d/e");
	$node->addChild($fqn)->getPath();*/

	#$rootNode = $cache->getRootNode();
	#$fqn = FullyQualifiedName::fromString("/a/b/c");
	#$rootNode->addChild($fqn);

	#$rootNode = $cache->getRootNode();
	#$fqn = FullyQualifiedName::fromString("/a/b/d/e");
	#$rootNode->addChild($fqn);

	#$x = $cache->query("/a/b/d/e");

	#var_dump($x);

	#$fqn = FullyQualifiedName::fromString("z/w");
	#$x->addChild($fqn);

	#$x = $cache->query("/a/b/d/e/z/w");

	#print $x->getId();

	#print $x->getValue();

	#$cache->gt();

}
catch(Exception $e){
	print get_class($e).": ".$e->getMessage()."\n";
}


?>

<?php

try {



	//Se carga la configuracion
	$config = CacheConfiguration::loadFromXML("config-client.xml");

	//Se crea la cache apartir de la configuracion
	$factory = new CacheFactory();
	$cache = $factory->createCache($config);

	//Se obtiene el nodo raiz desde la Cache
	$rootNode = $cache->getRootNode();

	// De acuerdo a la estructura en arbol del cache se crea
	// un nombre para definir un nodo en esa posicion del arbol
	$fqn = FullyQualifiedName::fromString("/paises/inglaterra");

	//Se agrega el nodo al arbol desde la raiz
	$inglaterra = $rootNode->addChild($fqn);

	//Ahora se agregan atributos al Nodo
	$inglaterra->put("capital", "Londres");
	$inglaterra->put("continente", "Europa");

	//Cualquier tipo de dato serializable se puede almacenar como atributo
	$inglaterra->put("bandera", new Bandera());
	$inglaterra->put("seHablaIngles", true);

	//Obtener el valor de los atributos
	print $inglaterra->get("capital")."\n"; //Londres
	print get_class($inglaterra->get("bandera"))."\n"; //Bandera

}
catch(Exception $e){
	print $e->getMessage()."\n";
}
?>
//Ejemplo: Uso del componente Auth con un servidor KerberosV

<?php

class LoginController extends ApplicationController {

	public function startSessionAction(){
		$login = $this->getPost("login");
		$password = $this->getPost("password");
		$auth = new Auth('radius',
			"realm: GONICUS.LOCAL",
			"admin/admin",
			"password"
		);
		if($auth->authenticate()==true){
			$identity = $auth->getIdentity();
			$policies = $auth->getPolicies();
			Flash::success("Bienvenido {$identity['username']}");
			foreach($policies as $policy){
				Flash::notice($policy);
			}
		} else {
			Flash::error("Fallo autenticacion. Credenciales invalidas");
		}
	}

}
